export {};

interface NameItf {
  readonly name: string; // readonly 属性名  表示这个属性只允许读取，修改就报错
}

interface AgeItf {
  age?: number; // 属性名？ 表示这个属性可以省缺（定义数据的时候不写也可以）
}

// 接口继承的格式，特点是 具有父接口的属性类型

interface Person extends NameItf, AgeItf {
  // 属性名：属性类型，表示这个属性的类型
  // 属性名：属性类型 = 属性初始值，表示这个属性的类型和初始值
  height: number;
}

let p: Person;

p = {
  name: 'John',
  age: 18,
  height: 1.80
}

// p.name = 'John'

// 接口可以同名， 特点是，合并了（都具有）所有属性类型
interface AItf {
  a: number;
}

interface AItf {
  b: string;
}

let obj: AItf = {
  a: 1,
  b: 'b'
}